build: Check for EGL support in libepoxy on Windows
authorChun-wei Fan <fanchunwei@src.gnome.org>
Fri, 22 Jun 2018 07:02:24 +0000 (15:02 +0800)
committerChun-wei Fan <fanchunwei@src.gnome.org>
Thu, 30 Jul 2020 06:26:33 +0000 (14:26 +0800)
...EGL support needs to be explicitly enabled during the build of
libepoxy on Windows as it is not enabled by default on Windows.

With this, we can add an EGL renderer for Windows that make use of
Google's libANGLE, which is a library that translates OpenGL/ES calls
to Direct3D 9/11, which will provide better hardware compatibility
on Windows and would act as one of the foundations to resolve issue #105.

gdk/win32/meson.build
meson.build

index 2a1cbe403bcf1f153eee7d26fd4906e97b3ef17e..1941fb7f3e45aab24f2a9e56696e5ff151427a8a 100644 (file)
@@ -43,6 +43,12 @@ gdk_win32_public_headers = files([
 
 install_headers(gdk_win32_public_headers, 'gdkwin32.h', subdir: 'gtk-4.0/gdk/win32/')
 
+GDK_WIN32_EGL_CFLAGS = []
+
+if win32_has_egl
+  GDK_WIN32_EGL_CFLAGS = ['-DGDK_WIN32_ENABLE_EGL']
+endif
+
 gdk_win32_deps = [ # FIXME
     pangowin32_dep
 ]
@@ -50,5 +56,5 @@ gdk_win32_deps = [ # FIXME
 libgdk_win32 = static_library('gdk-win32',
   gdk_win32_sources, gdkconfig, gdkenum_h,
   include_directories: [confinc, gdkinc],
-  c_args: ['-DGTK_COMPILATION', '-DG_LOG_DOMAIN="Gdk"', '-DINSIDE_GDK_WIN32'],
+  c_args: ['-DGTK_COMPILATION', '-DG_LOG_DOMAIN="Gdk"', '-DINSIDE_GDK_WIN32'] + GDK_WIN32_EGL_CFLAGS,
   dependencies: [gdk_deps, gdk_win32_deps])
index 71d7fd399f09232d6e4883ab348f41866cec8c60..7fa96b745cc7f0074b5533fed946b217ff18a3f2 100644 (file)
@@ -607,6 +607,22 @@ if win32_enabled
   endif
   pc_gdk_extra_libs += ['-lwinmm', '-ldwmapi', '-lsetupapi', '-lcfgmgr32']
   backend_immodules += ['ime']
+
+  # Check whether libepoxy is built with EGL support on Windows
+  win32_has_egl = cc.links(
+     '''
+     #include <epoxy/egl.h>
+        
+     int main(int argc, char *argv[])
+     {
+       EGLDisplay disp = EGL_NO_DISPLAY;
+
+       return epoxy_egl_version (disp);
+     } 
+     ''',
+     dependencies : epoxy_dep,
+     name : 'libepoxy supports EGL on Windows'
+    )
 endif
 
 # Check for bind_textdomain_codeset, including -lintl if GLib brings it in by